package com.maybach.workflow.core.config.parser;


import com.maybach.util.AssertUtil;
import com.maybach.workflow.common.api.node.TransactionNode;
import org.apache.commons.lang.StringUtils;
import org.w3c.dom.Element;

/**
 * Created by houenxun on 15/8/13.
 */
public class TransactionParser extends AbstractParser<TransactionNode>{

    public TransactionParser(){
        super(NodeParser.NODE_NAME_TRANSACTION);
    }
    @Override
    public TransactionNode createNode() {
        return new TransactionNode();
    }

    @Override
    public void parseSpecial(Element element, TransactionNode specialNode) {
        specialNode.setExpression(element.getAttribute(NodeParser.ATTR_EXPRESSION));
    }

    @Override
    public void check(TransactionNode transactionNode){
        super.check(transactionNode);
        //AssertUtil.notBlank(transactionNode.getExpression(),"transactionNode.getExpression()");
        if(StringUtils.isBlank(transactionNode.getExpression())){
            logger.warn("transaction expresion is blank , transaction={}",transactionNode);
        }
        AssertUtil.notBlank(transactionNode.getTo(), "transaction:" + transactionNode.getName() + " to ");
    }
}
